﻿using QuanLyChoVayCaNhan.Forms;
using QuanLyChoVayCaNhan.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuanLyChoVayCaNhan.Classes
{
    public class ThamDinhTaiSanDamBaoTab : BaseTab
    {
        private TaiSan _selectedTaiSan = null;
        public TaiSan SelectedTaiSan
        {
            get { return _selectedTaiSan; }
            set { _selectedTaiSan = value; }
        }
        public ThamDinhTaiSanDamBaoTab(System.Windows.Forms.BindingSource hoSoBindingSource)
        {
            // TODO: Complete member initialization
            this.MainBindingDataSource = hoSoBindingSource;
        }
        public override TabType GetTabType()
        {
            return TabType.ThamDinhTaiSanDamBaoTab;
        }

        public override MenuItemType[] GetSupportedMenus()
        {
            if (UserManager.GetInstance().IsAdmin())
            {
                return new MenuItemType[] { MenuItemType.VIEW_TSDB, MenuItemType.PRINT_TSDB, MenuItemType.REFRESH, MenuItemType.HELP };
            }
            if (UserManager.GetInstance().IsCBHTQHKH())
            {
                return new MenuItemType[] { MenuItemType.VIEW_TSDB, MenuItemType.ADD_TSDB, MenuItemType.PRINT_TSDB, MenuItemType.REFRESH, MenuItemType.HELP };
            }
            return new MenuItemType[] { MenuItemType.VIEW_TSDB, MenuItemType.REFRESH, MenuItemType.HELP };
        }

        public override void LoadData()
        {
            this.MainBindingDataSource.DataSource = ModelManager.GetInstance().db.HoSoes.ToList();
        }

        public override string GetTabTitle()
        {
            return "Thẩm định tài sản đảm bảo";
        }

        public override void OnAddClick()
        {
            throw new NotImplementedException();
        }

        public override void OnViewClick()
        {
            throw new NotImplementedException();
        }

        public override void OnEditClick()
        {
            throw new NotImplementedException();
        }

        public override void OnDeleteClick()
        {
            throw new NotImplementedException();
        }

        public override void OnHelpClick()
        {
            MessageBox.Show("Giải thích các chức năng:\n1. Xem tài sản đảm bảo: \n2. Lập biên bản định giá tài sản: \n3. In biên bản định giá tài sản: \n4. Cập nhật biên bản định giá tài sản: \n5. Trợ giúp: \nQuyền truy cập: Trên mỗi hồ sơ chỉ có một cán bộ hỗ trợ quan hệ khách hàng mới có quyền lập và cập nhật biên bản định giá tài sản\n");
            return;
        }

        public override void OnPrintClick()
        {
            throw new NotImplementedException();
        }

        public override void OnRefreshClick()
        {
            LoadData();
        }

        public override void OnViewTDTDClick()
        {
            throw new NotImplementedException();
        }

        public override void OnViewTTTDClick()
        {
            throw new NotImplementedException();
        }

        public override void OnViewTSDBClick()
        {
            if (WindowsManager.GetInstance().TabThamDinhTaiSanDamBao.SelectedIndex == -1)
            {
                MessageBox.Show("Bạn chưa chọn hồ sơ nào");
                return;
            }
            HoSo hs = (HoSo)WindowsManager.GetInstance().TabThamDinhTaiSanDamBao.SelectedItem;
            if (hs.TaiSans.Count == 0)
            {
                if (MessageBox.Show("Hồ sơ này chưa được thẩm định tài sản đảm bảo\nBạn có muốn tạo mới biên bản định giá tài sản không?", "Xác nhận tạo mới", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    // tao moi bien ban dinh gia tai san
                    this.OnAddTSDBClick();
                    return;
                }
            }
            ViewTaiSanDamBao fViewTaiSanDamBao = new ViewTaiSanDamBao();
            fViewTaiSanDamBao.FormClosed += reloadData_FormClosed;
            fViewTaiSanDamBao.ShowDialog();
        }

        void reloadData_FormClosed(object sender, FormClosedEventArgs e)
        {
            LoadData();
        }

        public override void OnEditTDTDClick()
        {
            throw new NotImplementedException();
        }

        public override void OnEditTTTDClick()
        {
            throw new NotImplementedException();
        }

        public override void OnAddTSDBClick()
        {
            if (WindowsManager.GetInstance().TabThamDinhTaiSanDamBao.SelectedIndex == -1)
            {
                MessageBox.Show("Bạn chưa chọn hồ sơ nào");
                return;
            }
            HoSo hs = (HoSo)WindowsManager.GetInstance().TabThamDinhTaiSanDamBao.SelectedItem;
            if (hs.TaiSans.Count == 0)
            {
                // khong co quyen lap bao cao
                if (!UserManager.GetInstance().IsCBHTQHKH())
                {
                    MessageBox.Show("Bạn không có quyền thẩm định tài sản đảm bảo");
                    return;
                }
            }
            else if (hs.TaiSans.First<TaiSan>().MaNVHTQHKH != UserManager.GetInstance().GetMaNhanVien())
            {
                MessageBox.Show("Bạn không có quyền định giá tài sản đảm bảo cho hồ sơ này\nQuyền này thuộc về CB HTQHKH: " + hs.TaiSans.First<TaiSan>().NhanVienHTQHKH.TenNV);
                return;
            }
            // lap bao cao tai san moi
            ViewTaiSanDamBao fViewTaiSanDamBao = new ViewTaiSanDamBao(true);
            fViewTaiSanDamBao.FormClosed += reloadData_FormClosed;
            fViewTaiSanDamBao.ShowDialog();
        }

        public override void OnPrintTDTDClick()
        {
            throw new NotImplementedException();
        }

        public override void OnPrintTTTDClick()
        {
            throw new NotImplementedException();
        }

        public override void OnPrintTSDBClick()
        {
            MessageBox.Show("Để in biên bản định giá tài sản, bạn hãy chọn xem một hồ sơ, tiếp theo chọn một tài sản trong danh sách, và nhấn nút in biên bản định giá tài sản");
        }

        public override void OnSearchKHClick()
        {
            throw new NotImplementedException();
        }
    }
}
